package com.suanfa.collect;

/**
 * @author jukg
 * @date 2025/01/08 15:37
 * @description
 * n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。
 *
 * 你需要按照以下要求，给这些孩子分发糖果：
 *
 * 每个孩子至少分配到 1 个糖果。
 * 相邻两个孩子评分更高的孩子会获得更多的糖果。
 * 请你给每个孩子分发糖果，计算并返回需要准备的 最少糖果数目 。
 */
public class Candy {

    public static void main(String[] args) {
        int[] ratings= {1,3,5,2,3,3};  //1 2+1,1,1+1,1
        System.out.println(candy(ratings));
    }

    public static int candy(int[] ratings) {

        int n = ratings.length;

        int[] total = new int[n];
        total[0]=1;
        for(int i = 1; i< n; i++){
            if(ratings[i] > ratings[i-1]){
                total[i] = total[i-1] +1;
            }else {
                total[i]=1;
            }
        }

        int right = 0;
        int result = 0;
        for(int i = n-1; i>=0; i--){
            if(i< n-1 && ratings[i] > ratings[i+1]){
                right ++;
            }else{
                right = 1;
            }
            result += Math.max(total[i], right);

        }
        return result;
    }
}
